[196-Disable] Update agent index, controller, css, etc to show disabled state

Glenn 'devalias' Grant 11 years ago
parent
commit
9e935ce74e

+ 7 - 1
app/assets/stylesheets/application.css.scss.erb

@@ -133,4 +133,10 @@ span.not-applicable:after {
133 133
   position: relative;
134 134
   width: 940px;
135 135
   height: 400px;
136
-}
136
+}
137
+
138
+// Disabled
139
+
140
+.agent-disabled {
141
+  text-decoration:line-through;
142
+}

+ 32 - 0
app/controllers/agents_controller.rb

@@ -28,6 +28,38 @@ class AgentsController < ApplicationController
28 28
     end
29 29
   end
30 30
 
31
+  def disable
32
+    agent = current_user.agents.find(params[:id])
33
+
34
+    # save_successful = false
35
+
36
+    # Enable/Disable the agent
37
+    if params[:disable] == "true"
38
+      agent.disabled = true
39
+      save_successful = agent.save
40
+      message = "Agent '#{agent.name}' disabled"
41
+    elsif params[:disable] == "false"
42
+      agent.disabled = false
43
+      save_successful = agent.save
44
+      message = "Agent '#{agent.name}' enabled"
45
+    end
46
+
47
+    # Handle save errors
48
+    if save_successful != true
49
+      agent_status = "enabled"
50
+      if agent.disabled?
51
+        agent_status = "disabled"
52
+      end
53
+      message = "Something went wrong. Agent '#{agent.name}' is still #{agent_status} #{save_successful}"
54
+    end
55
+
56
+    if params[:return] == "show"
57
+      redirect_to agent_path(agent), notice: message
58
+    else
59
+      redirect_to agents_path, notice: message
60
+    end
61
+  end
62
+
31 63
   def type_details
32 64
     agent = Agent.build_for_type(params[:type], current_user, {})
33 65
     render :json => {

+ 4 - 2
app/helpers/application_helper.rb

@@ -8,10 +8,12 @@ module ApplicationHelper
8 8
   end
9 9
 
10 10
   def working(agent)
11
-    if agent.working?
11
+    if agent.disabled?
12
+      '<span class="label label-warning">Disabled</span>'.html_safe
13
+    elsif agent.working?
12 14
       '<span class="label label-success">Yes</span>'.html_safe
13 15
     else
14
-      link_to '<span class="label label-warning">No</span>'.html_safe, agent_path(agent, :tab => (agent.recent_error_logs? ? 'logs' : 'details'))
16
+      link_to '<span class="label btn-danger">No</span>'.html_safe, agent_path(agent, :tab => (agent.recent_error_logs? ? 'logs' : 'details'))
15 17
     end
16 18
   end
17 19
 end

+ 20 - 7
app/views/agents/index.html.erb

@@ -18,7 +18,11 @@
18 18
         </tr>
19 19
 
20 20
         <% @agents.each do |agent| %>
21
-          <tr>
21
+          <% if agent.disabled? %>
22
+            <tr class='agent-disabled'> <!-- TODO: Change this to an agent-disabled class -->
23
+          <% else %>
24
+            <tr>
25
+          <% end %>
22 26
             <td>
23 27
               <%= agent.name %>
24 28
               <br/>
@@ -62,13 +66,22 @@
62 66
             <td><%= working(agent) %></td>
63 67
             <td>
64 68
               <div class="btn-group">
65
-                <%= link_to 'Show', agent_path(agent), class: "btn btn-mini" %>
66
-                <%= link_to 'Edit', edit_agent_path(agent), class: "btn btn-mini" %>
67
-                <%= link_to 'Delete', agent_path(agent), method: :delete, data: { confirm: 'Are you sure?' }, class: "btn btn-mini" %>
68
-                <% if agent.can_be_scheduled? %>
69
-                  <%= link_to 'Run', run_agent_path(agent, :return => "index"), method: :post, class: "btn btn-mini" %>
69
+                <%= link_to 'Show', agent_path(agent), class: "btn btn-mini btn-primary" %>
70
+
71
+                <%= link_to 'Edit', edit_agent_path(agent), class: "btn btn-mini btn-primary" %>
72
+
73
+                <% if agent.disabled? %>
74
+                  <%= link_to 'Enable', disable_agent_path(agent, :disable => "false", :return => "index"), method: :post, class: "btn btn-mini btn-success" %>
75
+                <% else %>
76
+                  <%= link_to 'Disable', disable_agent_path(agent, :disable => "true", :return => "index"), method: :post, class: "btn btn-mini btn-warning" %>
77
+                <% end %>
78
+
79
+                <%= link_to 'Delete', agent_path(agent), method: :delete, data: { confirm: 'Are you sure?' }, class: "btn btn-mini btn-danger" %>
80
+
81
+                <% if agent.can_be_scheduled? && !agent.disabled? %>
82
+                  <%= link_to 'Run', run_agent_path(agent, :return => "index"), method: :post, class: "btn btn-mini btn-success" %>
70 83
                 <% else %>
71
-                  <%= link_to 'Run', "#", class: "btn btn-mini disabled" %>
84
+                  <span class='btn btn-mini disabled'>Run</span>
72 85
                 <% end %>
73 86
               </div>
74 87
             </td>

+ 1 - 0
config/routes.rb

@@ -2,6 +2,7 @@ Huginn::Application.routes.draw do
2 2
   resources :agents do
3 3
     member do
4 4
       post :run
5
+      post :disable
5 6
       post :handle_details_post
6 7
       delete :remove_events
7 8
     end